package cn.demoncat.util.word.entity;

import cn.demoncat.util.word.constant.WordGenConstant;

import java.util.ArrayList;
import java.util.List;

/**
 * Word文档 - 内容 - 段落
 *
 * @author 延晓磊
 * @since 2021年04月10日
 */
public class WordParagraph {

    /**
     * 样式：默认WordGenConstant.Style.NORMAL
     */
    private String style = WordGenConstant.Style.NORMAL;
    /**
     * 数据
     */
    private List<WordRun> runs;
    /**
     * 对齐方式：默认WordGenConstant.Align.LEFT
     */
    private String align = WordGenConstant.Align.LEFT;
    /**
     * 断页：1新开一页来创建段落，0换行，null换行
     */
    private String pageBreak;


    /**
     * 添加数据
     *
     * @param run
     *
     * @return 数据
     *
     * @author 延晓磊
     * @since 2021年04月12日
     */
    public WordRun addRun(WordRun run){
        if (this.getRuns() == null) {
            this.setRuns(new ArrayList<>());
        }
        this.getRuns().add(run);
        return run;
    }

    /**
     * 添加数据
     *
     * @return 数据
     *
     * @author 延晓磊
     * @since 2021年04月12日
     */
    public WordRun addRun(){
        return addRun(new WordRun());
    }

    /**
     * 添加数据 - 换行
     *
     * @return 当前段落
     *
     * @author 延晓磊
     * @since 2021年04月12日
     */
    public WordParagraph addLine(){
        addRun(WordRun.INSTANCE_BREAK_LINE);
        return this;
    }

    /**
     * 添加数据 - 换页
     *
     * @return 当前段落
     *
     * @author 延晓磊
     * @since 2021年04月12日
     */
    public WordParagraph addPage(){
        addRun(WordRun.INSTANCE_BREAK_PAGE);
        return this;
    }

    /**
     * 添加数据 - 制表符
     *
     * @return 当前段落
     *
     * @author 延晓磊
     * @since 2021年04月12日
     */
    public WordParagraph addTab(){
        addRun(WordRun.INSTANCE_BREAK_TAB);
        return this;
    }


    public String getStyle() {
        return style;
    }

    public void setStyle(String style) {
        this.style = style;
    }

    public List<WordRun> getRuns() {
        return runs;
    }

    public void setRuns(List<WordRun> runs) {
        this.runs = runs;
    }

    public String getAlign() {
        return align;
    }

    public void setAlign(String align) {
        this.align = align;
    }

    public String getPageBreak() {
        return pageBreak;
    }

    public void setPageBreak(String pageBreak) {
        this.pageBreak = pageBreak;
    }
}
